<?php

namespace App\Http\Controllers\Landscaping;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Landscaping\Vegetation;
use Illuminate\Database\QueryException;
use App\Http\Requests\Landscaping\VegetationRequest;

/**
 * @group 基础信息管理->绿化->植被信息库->种类管理
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class VegetationController extends Controller
{
    /**
     * 植被种类列表---分页
     *
     * @bodyParam name string 植被名称
     *
     * @queryParam name string 植被名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function index(Request $request)
    {
        $vegetation = new Vegetation();
        $data = $vegetation->getList($request);
    	return response()->json(encodeMsg($data,200));
    }

    /**
     * 植被种类列表---不分页
     *
     * @queryParam name string 植被名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function getAll(Request $request)
    {
        $data = Vegetation::orderBy('sort','asc')->get();
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 新增植被种类
     *
     * @bodyParam name string required 植被名称
     * @bodyParam property char required 类型属性 0点 1面
     * @bodyParam color string 颜色
     * @bodyParam sort integer 排序
     *
     * @queryParam name string 植被名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function create(VegetationRequest $request)
    {
        try {
    	    $data = Vegetation::create($request->all());
    		return response()->json(encodeMsg($data,201));
    	} catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '植被种类添加失败!'],400));
    	}
    }

    /**
     * 查看植被种类
     *
     * @bodyParam id integer required 植被种类自增长ID
     *
     * @queryParam name string 植被名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function show($id)
    {
    	// 创建模型
    	$data = Vegetation::find($id);
    	if($data == []) {
    		return response()->json(encodeMsg(["message" => "没有该植被种类!"], 404));
    	}
		return response()->json(encodeMsg($data,200));
    }

    /**
     * 修改植被种类
     *
     * @bodyParam id integer required 植被种类自增长ID
     * @bodyParam name string required 植被名称
     * @bodyParam property char required 类型属性 0点 1面
     * @bodyParam color string 颜色
     * @bodyParam sort integer 排序
     *
     * @queryParam name string 植被名称
     * @queryParam property char 类型属性 0点 1面
     * @queryParam color string 颜色
     * @queryParam sort integer 排序
     */
    public function update(VegetationRequest $request,$id)
    {
    	// 创建模型
        $vegetation = Vegetation::find($id);
        if($vegetation == []) {
    		return response()->json(encodeMsg(["message" => "没有该植被种类!"], 404));
    	}
    	try {
            $vegetation->update($request->all());
            return response()->json(encodeMsg($vegetation,200));
    	} catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '植被种类修改失败!'],400));
    	}
    }

    /**
     * 删除植被种类
     *
     * @bodyParam id integer required 植被种类ID
     * @response 204 {
     *   "message": "删除成功"
     * }
     *
     *
     * @response 404 {
     *  "message": "没有该植被种类"
     * }
     */
    public function delete($id)
    {
    	// 创建模型
        $vegetation = Vegetation::find($id);
        if($vegetation == []) {
    		return response()->json(encodeMsg(["message" => "没有该植被种类!"], 404));
    	}
        if($vegetation->delete()) {
            return response()->json(encodeMsg(["message" => "删除成功!"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "删除失败!"], 400));
        }
    }

    /**
     * 批量删除植被种类
     *
     * @bodyParam ids integer required id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "植被种类删除成功"
     * }
     *
     *
     */
    public function destroy($ids)
    {
        $listId = explode(',', $ids);
        Vegetation::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "植被种类删除成功!"], 204));
    }

}
